<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <script>
      /*
      * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

       

      示例 1：


      输入：l1 = [1,2,4], l2 = [1,3,4]
      输出：[1,1,2,3,4,4]
      示例 2：

      输入：l1 = [], l2 = []
      输出：[]
      示例 3：

      输入：l1 = [], l2 = [0]
      输出：[0]
       

      提示：

      两个链表的节点数目范围是 [0, 50]
      -100 <= Node.val <= 100
      l1 和 l2 均按 非递减顺序 排列
      通过次数627,413提交次数945,174

      来源：力扣（LeetCode）
      链接：https://leetcode-cn.com/problems/merge-two-sorted-lists
      著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      * */

      const l1 = { val: 1, next: { val: 2, next: { val: 3, next: null } } },
        l2 = { val: 2, next: { val: 3, next: { val: 5, next: null } } };

      /* @param {ListNode} l1
       * @param {ListNode} l2
       * @return {ListNode}
       */
      var mergeTwoLists = function (l1, l2) {
        const dummyHead = { val: 0, next: null };
        let cur = dummyHead;

        while (l1 !== null && l2 !== null) {
          if (l1.val < l2.val) {
            cur.next = l1;
            cur = cur.next;
            l1 = l1.next;
          } else {
            cur.next = l2;
            cur = cur.next;
            l2 = l2.next;
          }

          if (l1 == null) {
            cur.next = l2;
          } else {
            cur.next = l1;
          }
        }

        return dummyHead.next;
      };
      console.log(mergeTwoLists(l1, l2));
    </script>
  </body>
</html>
